package com.example.tcp2504;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
/**
 * LearnBarActivity 类用于演示进度条的使用
 * 该类继承自 AppCompatActivity，并包含两个进度条和一个文本视图来显示进度
 */
public class learnBarActivity extends AppCompatActivity {

    // 水平进度条
    private ProgressBar progressBarHorizontal;
    // 圆形进度条
    private ProgressBar progressBarCircular;
    // 显示进度的文本视图
    private TextView tvProgress;
    // 开始按钮
    private Button btnStart;
    // 记录当前进度的状态变量
    private int progressStatus = 0;
    // 用于在子线程中更新 UI 的处理器
    private Handler handler = new Handler();

    /**
     * Activity 创建时调用的方法
     * 初始化组件并设置按钮的点击事件监听器
     *
     * @param savedInstanceState 保存的实例状态
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_learn_bar);

        // 初始化组件
        progressBarHorizontal = findViewById(R.id.progressBarHorizontal);
        progressBarCircular = findViewById(R.id.progressBarCircular);
        tvProgress = findViewById(R.id.tvProgress);
        btnStart = findViewById(R.id.btnStart);

        // 设置按钮点击事件
        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startProgress();
            }
        });
    }

    /**
     * 开始进度增长的方法
     * 重置进度并启动一个新的线程来模拟耗时操作，同时更新 UI
     */
    private void startProgress() {
        // 重置进度
        progressStatus = 0;
        progressBarHorizontal.setProgress(progressStatus);
        tvProgress.setText("进度: 0%");

        // 可选择隐藏圆形进度条
        progressBarCircular.setVisibility(View.GONE);

        // 设置按钮不可点击
        btnStart.setEnabled(false);

        // 启动进度增长
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (progressStatus < 100) {
                    progressStatus += 5;

                    // 更新UI
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            progressBarHorizontal.setProgress(progressStatus);
                            tvProgress.setText("进度: " + progressStatus + "%");
                        }
                    });

                    try {
                        // 模拟耗时操作
                        Thread.sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

                // 加载完成
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        tvProgress.setText("加载完成!");
                        btnStart.setEnabled(true);
                    }
                });
            }
        }).start();
    }
}
